JavaScript
part 13/19 Β· 71.4 KB total
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Depuis le support de let par les navigateurs modernes, var ne doit plus Γͺtre utilisΓ© et son utilisation est considΓ©rΓ© comme une mauvaise pratiquecite-ref-29[29].
// 1. DΓ©claration dans un bloc
if (true) { // dΓ©but du bloc
var maVariable1; // dΓ©claration de la variable
let maVariable2; // dΓ©claration de la variable
const maVariable3; // dΓ©claration de la variable
} // fin du bloc mais pas de la portΓ©e de maVariable1
alert(maVariable1); // ne soulève pas d'erreur
alert(maVariable2); // erreurΒ : la variable est hors de sa portΓ©e
alert(maVariable3); // erreurΒ : la variable est hors de sa portΓ©e
// 2. DΓ©claration dans une fonction
function maFunction() { // dΓ©but de la fonction
var maVariable4; // dΓ©claration de la variable
let maVariable5; // dΓ©claration de la variable
const maVariable6; // dΓ©claration de la variable
} // fin de la fonction et de la portΓ©e des variables
alert(maVariable4); // erreurΒ : la variable est hors de sa portΓ©e
alert(maVariable5); // erreurΒ : la variable est hors de sa portΓ©e
alert(maVariable6); // erreurΒ : la variable est hors de sa portΓ©e
Une variable peut Γͺtre affectΓ©e ou masquΓ©e par une fonction enfant de la fonction (ou de l'espace global) oΓΉ elle est dΓ©clarΓ©e :
var maVariable1 = 0; // dΓ©finition de la variable parente
// 1. Affectation
function maFonction1() { // fonction enfant
maVariable1 = 1; // affectation de la variable parente
}
alert(maVariable1); // affiche 0
maFonction1(); // affecte la variable parente
alert(maVariable1); // affiche 1
// 2. Masquage
var maVariable2 = 0; // dΓ©finition de la variable parente
function maFonction2() { // fonction enfant
var maVariable2; // dΓ©claration de la variable enfant masquant la variable parente
maVariable2 = 1; // affectation de la variable enfant
}
alert(maVariable2); // affiche 0
maFonction2();
alert(maVariable2); // affiche 0
DΓ©claration des variables
En JavaScript, quel que soit le lieu de la déclaration d'une variable dans sa portée lexicale, la variable est créée au début de l'évaluation de sa portée lexicale.
Les variables déclarées avec le mot-clé var sont en plus pré-initialisées à la valeur undefined lors de leur création, et donc accessibles dès le début de leur portée lexicale. On parle de remontée de la variable (variable hoisting en anglais) car cela se passe comme si la déclaration de la variable était remontée au début de sa portée lexicale :
alert(maVariable); // affiche undefined
var maVariable = 0;
alert(maVariable); // affiche 0
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ